package com.zp.business.entity.patient.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.zp.common.core.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;


/**
 * 门诊就诊记录视图对象
 *
 * @author zhang peng
 * @ date 2023-12-23
 */
@EqualsAndHashCode(callSuper = true)
@Data
//@ExcelIgnoreUnannotated
public class ClinicMasterVo extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
//    // @ExcelProperty(value = "主键")
    private String id;

    /**
     * 病历簿号
     */
//    // @ExcelProperty(value = "病历簿号")
    private String recordNo;

    /**
     * 第一次保存病历
     */
//    // @ExcelProperty(value = "第一次保存病历")
    private Date firstClinicRecord;

    /**
     * 第一次开单时间
     */
//    // @ExcelProperty(value = "第一次开单时间")
    private Date firstOrder;

    /**
     * 第一次收费时间
     */
//    // @ExcelProperty(value = "第一次收费时间")
    private Date firstCharge;

    /**
     * 第一次检查确认时间
     */
//    // @ExcelProperty(value = "第一次检查确认时间")
    private Date firstExamConfirm;

    /**
     * 第一次检验确认时间
     */
    // // @ExcelProperty(value = "第一次检验确认时间")
    private Date firstLabConfirm;

    /**
     * 第一次取西药时间
     */
    // @ExcelProperty(value = "第一次取西药时间")
    private Date firstTakeDrug;

    /**
     * 第一次取中药时间
     */
    // @ExcelProperty(value = "第一次取中药时间")
    private Date firstTakeZdrug;

    /**
     * 机构ID
     */
    // @ExcelProperty(value = "机构ID")
    private String orgId;

    /**
     * 挂号类型 0：当日挂号 1：预约挂号
     */
    // @ExcelProperty(value = "挂号类型 0：当日挂号 1：预约挂号", converter = ExcelDictConvert.class)
    // // @ExcelDictFormat(dictType = "register_type")
    private String registType;

    /**
     * 是否急诊（N非急诊，Y急诊）
     */
    // @ExcelProperty(value = "是否急诊", converter = ExcelDictConvert.class)
    // // @ExcelDictFormat(dictType = "sys_yes_no")
    private String isEmergency;

    /**
     * 病人信息Id
     */
    // @ExcelProperty(value = "病人信息Id")
    private String patientId;

    /**
     * 就诊日期
     */
    // @ExcelProperty(value = "就诊日期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8", shape = JsonFormat.Shape.STRING)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date visitDate;

    /**
     * 就诊序号
     */
    // @ExcelProperty(value = "就诊序号")
    private Integer visitNo;

    /**
     * 门诊号
     */
    // @ExcelProperty(value = "门诊号")
    private String clinicNo;

    /**
     * 号表ID
     */
    // @ExcelProperty(value = "号表ID")
    private String registId;

    /**
     * 姓名
     */
    // @ExcelProperty(value = "姓名")
    private String name;

    /**
     * 姓名拼音码
     */
    // @ExcelProperty(value = "姓名拼音码")
    private String inputCode;

    /**
     * 性别
     */
    // @ExcelProperty(value = "性别")
    private String sex;

    /**
     * 年龄
     */
    // @ExcelProperty(value = "年龄")
    private Integer age;

    /**
     * 年龄-月
     */
    // @ExcelProperty(value = "年龄-月")
    private Integer ageMonth;

    /**
     * 年龄-天
     */
    // @ExcelProperty(value = "年龄-天")
    private Integer ageDay;

    /**
     * 年龄-时
     */
    // @ExcelProperty(value = "年龄-时")
    private Integer ageHours;

    /**
     * 年龄-分
     */
    // @ExcelProperty(value = "年龄-分")
    private Integer ageMinutes;

    /**
     * 联系电话
     */
    // @ExcelProperty(value = "联系电话")
    private String phone;

    /**
     * 住址
     */
    // @ExcelProperty(value = "住址")
    private String address;

    /**
     * 现住址代码
     */
    // @ExcelProperty(value = "现住址代码")
    private String addressCode;

    /**
     * 身份证号
     */
    // @ExcelProperty(value = "身份证号")
    private String idNo;

    /**
     * 监护人姓名
     */
    // @ExcelProperty(value = "监护人姓名")
    private String guardianName;

    /**
     * 监护人电话
     */
    // @ExcelProperty(value = "监护人电话")
    private String guardianPhone;

    /**
     * 出生日期
     */
    // @ExcelProperty(value = "出生日期")
    private Date birthdayDate;

    /**
     * 婚姻
     */
    // @ExcelProperty(value = "婚姻")
    private String marriage;

    /**
     * 体重
     */
    // @ExcelProperty(value = "体重")
    private String weight;

    /**
     * 民族
     */
    // @ExcelProperty(value = "民族")
    private String nation;

    /**
     * 国籍
     */
    // @ExcelProperty(value = "国籍")
    private String nationality;

    /**
     * 籍贯
     */
    // @ExcelProperty(value = "籍贯")
    private String nativePlace;

    /**
     * 籍贯代码
     */
    // @ExcelProperty(value = "籍贯代码")
    private String nativePlaceCode;

    /**
     * 邮编
     */
    // @ExcelProperty(value = "邮编")
    private String zipCode;

    /**
     * 出生地
     */
    // @ExcelProperty(value = "出生地")
    private String homePlace;

    /**
     * 出生地代码
     */
    // @ExcelProperty(value = "出生地代码")
    private String homePlaceCode;

    /**
     * 乡组
     */
    // @ExcelProperty(value = "乡组")
    private String countryGroup;

    /**
     * 联系人关系
     */
    // @ExcelProperty(value = "联系人关系")
    private String contactsRelation;

    /**
     * 联系人
     */
    // @ExcelProperty(value = "联系人")
    private String contacts;

    /**
     * 联系人身份证
     */
    // @ExcelProperty(value = "联系人身份证")
    private String contactsIdNo;

    /**
     * 联系人地址
     */
    // @ExcelProperty(value = "联系人地址")
    private String contactsAddress;

    /**
     * 联系人电话
     */
    // @ExcelProperty(value = "联系人电话")
    private String contactsPhone;

    /**
     * 身份
     */
    // @ExcelProperty(value = "身份")
    private String identity;

    /**
     * 文化程度
     */
    // @ExcelProperty(value = "文化程度")
    private String eduLevel;

    /**
     * 费别
     */
    // @ExcelProperty(value = "费别")
    private String chargeType;

    /**
     * 医保类别
     */
    // @ExcelProperty(value = "医保类别")
    private String insuranceType;

    /**
     * 患者医保来源 1本市 2省内 3全国
     */
    // @ExcelProperty(value = "患者医保来源 1本市 2省内 3全国", converter = ExcelDictConvert.class)
    // // @ExcelDictFormat(dictType = "patient_medical_source")
    private String source;

    /**
     * 患者来源
     */
    // @ExcelProperty(value = "患者来源")
    private String clinicSource;

    /**
     * 初诊标志
     */
    // @ExcelProperty(value = "初诊标志", converter = ExcelDictConvert.class)
    // // @ExcelDictFormat(dictType = "sys_yes_no")
    private String firstVisitIndicator;

    /**
     * 医疗保险号
     */
    // @ExcelProperty(value = "医疗保险号")
    private String insuranceNo;

    /**
     * 医保就医登记流水号
     */
    // @ExcelProperty(value = "医保就医登记流水号")
    private String residenceNo;

    /**
     * 合同单位
     */
    // @ExcelProperty(value = "合同单位")
    private String unitInContract;

    /**
     * 单位税号
     */
    // @ExcelProperty(value = "单位税号")
    private String unitEin;

    /**
     * 就诊科室
     */
    // @ExcelProperty(value = "就诊科室")
    private String deptId;

    /**
     * 医生Id
     */
    // @ExcelProperty(value = "医生Id")
    private String doctorId;

    /**
     * 挂号状态
     */
    // @ExcelProperty(value = "挂号状态")
    private String clinicType;

    /**
     * 实收费用
     */
    // @ExcelProperty(value = "实收费用")
    private BigDecimal clinicChage;

    /**
     * 退号日期
     */
    // @ExcelProperty(value = "退号日期")
    private Date registDate;

    /**
     * 退号操作员
     */
    // @ExcelProperty(value = "退号操作员")
    private String registOperator;

    /**
     * 退号结账
     */
    // @ExcelProperty(value = "退号结账")
    private String registNo;

    /**
     * 结账时间
     */
    // @ExcelProperty(value = "结账时间")
    private Date acctDateTime;

    /**
     * 转诊次数
     */
    // @ExcelProperty(value = "转诊次数")
    private Integer referralNum;

    /**
     * 结账号
     */
    // @ExcelProperty(value = "结账号")
    private String acctNo;

    /**
     * 备注信息
     */
    // @ExcelProperty(value = "备注信息")
    private String remarks;

    /**
     * 是否体检
     */
    // @ExcelProperty(value = "是否体检")
    private String isPhy;

    /**
     * 行程码
     */
    // @ExcelProperty(value = "行程码")
    private String tripCode;

    /**
     * 健康码
     */
    // @ExcelProperty(value = "健康码")
    private String healthyCode;

    /**
     * 1个检2团检
     */
    // @ExcelProperty(value = "1个检2团检")
    private String flag;

    /**
     * 支付方式1个人支付2集体支付
     */
    // @ExcelProperty(value = "支付方式1个人支付2集体支付", converter = ExcelDictConvert.class)
    // // @ExcelDictFormat(dictType = "payment_method")
    private String chargeFlag;

    /**
     * 把患者状态修改成未应诊的医生ID
     */
    // @ExcelProperty(value = "把患者状态修改成未应诊的医生ID")
    private String unattendedDoctor;

    /**
     * 1为登记2为撤销（msip新医保登记状态）
     */
    // @ExcelProperty(value = "1为登记2为撤销", converter = ExcelDictConvert.class)
    // // @ExcelDictFormat(readConverterExp = "m=sip新医保登记状态")
    private String registerFlag;

    /**
     * 结算号
     */
    // @ExcelProperty(value = "结算号")
    private String serialNo;

    /**
     * 谈判处方读卡登记标识1已登记
     */
    // @ExcelProperty(value = "谈判处方读卡登记标识1已登记")
    private String readFlag;

    /**
     * 便民平台挂号支付Id
     */
    // @ExcelProperty(value = "便民平台挂号支付Id")
    private String ptPayId;

    /**
     * 门诊标志,急诊转诊
     */
    // @ExcelProperty(value = "门诊标志,急诊转诊")
    private String otpErReflFlag;

    /**
     * 就医人群类型
     */
    // @ExcelProperty(value = "就医人群类型")
    private String mdtrtGrpType;

    /**
     * 外伤标志
     */
    // @ExcelProperty(value = "外伤标志")
    private String trumFlag;

    /**
     * 涉及第三方标志
     */
    // @ExcelProperty(value = "涉及第三方标志")
    private String relTtpFlag;

    /**
     * 查询参数：当日挂号时间字符串
     */
    private String visitDateStr;

    private Integer patientNum;

    private String deptName;

    private String doctorName;
}
